home *** CD-ROM | disk | FTP | other *** search
- zerOOne's Crackme #4 Tuturial
-
- ░
- ░ ░ ░ ▄▓
- ▄▄ ░░ ▄▄▄▄■ ░░▀ ■▄▄▄ ▄▄ ▐█▓▌
- ▄▀▀ ▀■ ▀ ░░ ▀ ■▀ ▀▀▄ ██▌
- ■ ▄▄▀▀ ▄▄██▀██▄▄ ▄▄▄███▄▄ ▀▄▄ ■ ▄▄▄███▄▄▐██ ▄▄████▄▄
- ▀▄▄ ▄▀▀ ▄███▀ ▀██▓▄ ▄████▀ ▀██▓▄ ▀▄ ▄▄▀ ▄████▀ ▀██▓██ ▄████▀ ▀██▓▄
- ▀▀ ▄ ▐███▌ ░ ▐██▓▌ ▐████▌ ░ ▐██▓▌ ▄ ▀▀ ▐████▌ ░ ▐████▌ ▐████▌ ▐██▓▌
- ■██▄▄▓▌ ████ ░▒░ ████ █████▄▄▄ ▀▀▀▀ ▐█▄▄█▓ █████ ░ █████ █████▄▄▀▀▀▀▀▀▀
- ▐████ ░░ ▓██▌ ░▒▓▒░ ▐███ ▄▄▄▄▄ ▀▀▀████▄ ████▌ ▓███▌ ▐████ ▓███▌ ░░░░░░
- ░ ███▌ ░ ▐▓███ ░▒▓▒░ ▓███▌▓███▌ ░░░ ▐████ ▐▓██ ▓███▌ ▄▀▀ ▐████ ▓███▌ ░░░░░░░
- ▓██▌ ▐▓███ ░▒░ ▓███▌▐▓███ ░ ▓███▌ ▐▓██ ▐▓███ ▓███▌ ▐▓███
- ▐▓███ ▐▓▓██▌ ░ ▐▓███▌ ▓▓██▌ ▐▓███ ▓███▌ ▓▓██▌ ░ ▐▓███ ▓▓██▌
- ▓▓▓██▌ ■▓▓▓▓██ ░ ▓█████■ ▀▓▓█▄ ▄▓██▀ ▐▓████ ▄ ▀▓██▄ ▄▓██▀ ▀▓██▄
- ▀▓███▄ ▀▀▀██▄ ▄▓█▀▀▀ ▀▀█▀▀ ▄▓▓▓▀▀ ▀▀█▀▀ ▀▀▀▀ js
- ▀▀▀▀▀▄▄ ░ iNSiDE ▄▄▀▀▀▀▀
- ░ ▀▄ ░ ░░ ▄▀
- ░░ ░ ░░
-
- Tutor : duelist
- Data Wrote : June 12, 1999
- Who : Newbies
- Target : zerOOne's Crackme #4
- Size : 116kb
- Tools Used : SoftIce
-
-
- - INTRODUCTION: -
-
- Ok people i'm back to the tuts scene and i hope both me and you will enjoy
- my stay. First of all, notice the size of this app, 116kb, that's way too
- much for a dos app! I loaded it using windows quikview and then i saw that
- it had tons of imports. Since i had cracked zerOOne's Crackme #1, i knew
- that this was a Win32 console mode program and that our result will be
- indicated by a messagebox!
-
- - CRACKING STEPS: -
-
- 1) Switch into softice and put a bpx on 'MessageBoxA', so we can break when
- the program tells us that our serial is incorrect.
-
-
- 2) Goto the application and enter any serial you want, hit enter!
-
-
- 3) Bingo, we'll break right in this snippet:
-
- :004010EF 55 push ebp
- :004010F0 8BEC mov ebp, esp
- :004010F2 51 push ecx
- :004010F3 C745FCF1FB0900 mov [ebp-04], 0009FBF1
- :004010FA E80BFFFFFF call 0040100A
- :004010F0 E81AFFFFFF call 0040100F \
- :004010F5 25FF000000 and eax, 000000FF | our success depends on the result of the
- :00401072 85C0 test eax, eax | call to 40100F, since eax is checked on return.
- :004010FC 7416 je 00401123 /
-
- ...
-
- :00401122 FF15ACF24100 USER32!MessageBoxA
- :00401128 E8ECFEFFFF call 00401005
- :0040112D 33C0 xor eax, eax ; you break here, but since we want to start
- tracing at the beggining of this call, set
- a breakpoint on 4010EF (!)
-
-
- 4) Repeat step 2, enter any serial you like and you'll break at the beggining, then trace into
- the call to 40100F, you'll see:
-
- :0040100F E93F000000 jmp 00401053 ; jump to real beggining
-
- ...
-
- :00401053 55 push ebp
- :00401054 8BEC mov ebp, esp
- :00401056 83EC0C sub esp, 0000000C
- :00401059 C745F400000000 mov [ebp-0C], 00000000
- :00401060 EB09 jmp 0040106B
- :00401062 8B4DF4 mov ecx, dword ptr [ebp-0C] \
- :00401065 83C101 add ecx, 00000001 |
- :00401068 894DF4 mov dword ptr [ebp-0C], ecx | this one is probably
- :0040106B 837DF464 cmp dword ptr [ebp-0C], 00000064 | a loop to get us bored (?)
- :0040106F 7D09 jge 0040107A | but it's not important so i
- :00401071 C745FC01000000 mov [ebp-04], 00000001 | didn't care about it....
- :00401078 EBE8 jmp 00401062 /
-
- :0040107A 813DB8D1410041100400 cmp dword ptr [0041D1B8], 00041041 ; compares the dec value of our name
- ; with 41041h, do a "? 41041" to get
- ; the valid code (!)
-
- :00401084 750D jne 00401093
- :0040107C C645FC01 mov [ebp-08], 01 / these are
- :00401080 C6058CD1410001 mov byte ptr [0041DB8C], 01 \ success
- :00401091 EB0B jmp 0040109E
- :00401093 C645F800 mov [ebp-08], 00 / these are
- :00401097 C605BCD1410000 mov byte ptr [0041D1BC], 00 \ failure
- :0040109E 8A45F8 mov al, byte ptr [ebp-08]
- :004010A1 8BE5 mov esp, ebp
- :004010A3 5D pop ebp
- :004010A4 C3 ret
-
-
- - FINAL NOTES: -
-
- Ok, from now on you can expect a lotta tuts from me (well at least that's what i hope)...
-
- Thx 2: E_Bliss for kinda 'forcing' me to write tuturials
- tC for being such a nice friend with some nice crackmes
- MisterE for showing me the way to go ;)
- R!SC for being a frenzy cracker and to have cracked my #3
- All the other dudes i don't remember right now...